package com.qcu.util;

import com.itextpdf.text.*;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

public class PdfUtil {

    public static byte[] convertToPdf(HashMap<String, String> data) throws DocumentException, IOException {
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        Document document = new Document();
        PdfWriter.getInstance(document, baos);
        document.open();

        // 加载自定义字体文件
//        String fontPath = PdfUtil.class.getResource("src/main/resources/方正粗黑宋简体.ttf").getPath();
        BaseFont bf = BaseFont.createFont("src/main/resources/方正粗黑宋简体.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
        Font font = new Font(bf, 12);

        // 添加标题，使用中文字体
        document.add(new Paragraph("体检信息", font));

        // 创建表格，假设表格有六列
        PdfPTable table = new PdfPTable(6);
        table.setWidthPercentage(100); // 设置表格宽度为页面宽度的100%

        // 添加表头，使用中文字体
        String[] headers = {"项目", "结果", "项目", "结果", "项目", "结果"};
        for (String header : headers) {
            PdfPCell cell = new PdfPCell(new Paragraph(header, font));
            table.addCell(cell);
        }

        // 添加内容，使用中文字体
        Iterator<Map.Entry<String, String>> iterator = data.entrySet().iterator();
        while (iterator.hasNext()) {
            for (int i = 0; i < 3; i++) {
                if (iterator.hasNext()) {
                    Map.Entry<String, String> entry = iterator.next();
                    table.addCell(new PdfPCell(new Paragraph(entry.getKey(), font)));
                    table.addCell(new PdfPCell(new Paragraph(entry.getValue(), font)));
                } else {
                    // 如果数据不足，添加空单元格
                    table.addCell(new PdfPCell(new Paragraph("", font)));
                    table.addCell(new PdfPCell(new Paragraph("", font)));
                }
            }
        }

        // 如果最后一行不满六列，填充空单元格
        int remainingCells = 6 - (table.getRows().get(table.getRows().size() - 1).getCells().length % 6);
        for (int i = 0; i < remainingCells; i++) {
            table.addCell(new PdfPCell(new Paragraph("", font)));
        }

        // 将表格添加到文档中
        document.add(table);

        document.close();
        return baos.toByteArray();
    }
}
